import { defineStore } from 'pinia'
import { computed, ref } from 'vue'

// defineStore 不是创建一个仓库实例
// 而是创建了仓库实例后, 返回一个调用可以得到仓库的函数
// 使用的方法是: const store = useCounterStore()
export const useCounterStore = defineStore('count', () => {
    // state 数据
    // 就是个响应式变量
    const count = ref(666)

    // mutations 同步处理
    // actions 异步处理
    // 就是普通函数
    const changeCount = () => {
        count.value++
    }
    const asyncChangeCount = () => {
        setTimeout(() => {
            count.value += 3
        }, 1000);
    }

    // modules 模块化
    // 没有这个概念, 因为 defineStore 就是用来定义仓库的, 可以多次调用

    // getters 类计算属性
    const doubleCount = computed(() => {
        return count.value * 2
    })

    // 要在外面使用的东西都要返回
    return {
        count,
        changeCount,
        asyncChangeCount,
        doubleCount
    }
})

